package com.amigo.online.provider.user.service;

import java.util.List;

import com.amigo.online.common.param.dto.group.*;
import com.amigo.online.common.param.result.GroupInfo;
import com.amigo.online.common.param.result.GroupListInfo;
import com.amigo.online.common.param.result.GroupUserInfo;
import com.amigo.online.common.param.result.PullableFriendsInfo;
import com.amigo.online.provider.user.model.entity.GroupMember;

/**
 * @author kml
 */
public interface GroupService {
    /**
     * 创建群组   kml
     *
     * @return
     */
    GroupInfo newGroup(NewGroupDto dto);

    boolean quitGroup(QuitGroupDto dto);

    boolean editGroup(EditGroupDto dto);

    List<PullableFriendsInfo> getPullableFriends(Long groupId);

    boolean addGroupMember(AddGroupMemberDto dto);

    GroupListInfo getMyGroup();

    List<GroupUserInfo> getMembersByGroupId(Long groupId, Integer page, Integer size);

    int getMembersCountByGroupId(Long groupId);

    String updateGroup(UpdateGroupDto dto);

    List<GroupInfo> nearbyGroup(Integer page, String lnt, String lat);

    /**
     * 申请进群
     *
     * @param dto
     * @return
     */
    boolean applyGroup(ApplyGroupDto dto);

    /**
     * 禁言
     *
     * @param dto
     * @return
     */
    boolean ban(BanDto dto);

    boolean sysnGroup(Integer startId, Integer endId);

    boolean allowApply(AllowApplyDto allowApplyDto);

    List<GroupMember> applyRecord(Long groupId);
}
